#ifndef __UTIL_H__
#define __UTIL_H__

#define FILE_NAME_LEN       256 //文件名字长度
#define USER_NAME_LEN       128 //用户名字长度
#define TEMP_BUF_MAX_LEN    512 //临时缓冲区大小
#define FILE_URL_LEN        512 //文件所存放storage的hostname长度
#define HOST_NAME_LEN       30	//主机ip地址长度
#define SUFFIX_LEN          8   //后缀名长度
#define TIME_STRING_LEN     25  //时间戳长度



#define UTIL_LOG_MODULE "util"
#define UTIL_LOG_PROC "cfg"
#define SQL_PWD_LEN 256
#define TOKEN_TIMEOUT 60 * 60 * 24
#define TOKEN_LEN 128
#define MD5_LEN 128

/**
 * @brief 内存分配
 * @param size 内存大小
 * @return 成功返回内存首地址，失败返回NULL
 */
void *MALLOC(int size);

/**
 * @brief 内存释放
 * @param ptr 内存首地址
 */
void FREE(void *ptr);

/**
 * @brief 返回前端状态
 * @param status 状态码
 * @return 状态字符串，NULL表示失败， 非空需要FREE释放
 */
char* ReturnStatus(char* status);

/**
 * @brief 去掉字符串前后空格, 不会分配新的空间，直接在原字符串上修改
 * @param inbuf 输入字符串
 * @return 0成功 -1失败
 */
int TrimSpace(char *inbuf);

/**
 * @brief 找子字符串的第一次出现
 * @param full_data 完整字符串
 * @param full_data_len 完整字符串长度
 * @param substr 子字符串
 * @return 子字符串首地址
 */
char* Memstr(char* fullData, int fullDataLen, char* substr);

/**
 * @brief 获取文件后缀
 * @param path 文件路径
 * @param suffix 后缀名
 * @return 0成功 -1失败
 */
int GetFileSuffix(char *filename, char *suffix);

#endif